package com.financial.management;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.ArrayList;


//登录页面逻辑
public class MainActivity extends AppCompatActivity {
    EditText edt_id,edt_pwd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edt_id = findViewById(R.id.edt_uid);
        edt_pwd =findViewById(R.id.edt_upwd);
        Button btn_login = findViewById(R.id.btn_login);
        //登录按键
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    String userId=edt_id.getText().toString();
                    String userPwd=edt_pwd.getText().toString();
                   /* 这段代码是在Android应用中创建一个数据库帮助类（DBHelper）的实例。

                    DBHelper：这是一个自定义的类，通常用于与SQLite数据库进行交互。这个类通常会包含一些方法，如创建数据库、打开数据库、关闭数据库、执行SQL查询等。
                    new DBHelper()：这是使用DBHelper类的构造函数创建一个新的DBHelper对象。
                    getApplicationContext()：这是从当前的上下文中获取应用程序的Context对象。在Android中，Context是一个非常重要的对象，它提供了与系统资源、应用环境以及应用组件交互的接口。在这里，使用getApplicationContext()而不是this作为参数传递给DBHelper的构造函数，是因为Application Context的生命周期更长，可以避免内存泄漏的问题。
                    所以，整个语句的意思是：使用应用程序的Context对象创建一个DBHelper实例，以便于后续进行数据库的创建、打开、关闭和数据操作等操作。*/
                    DBHelper dbuserHelper=new DBHelper(getApplicationContext());
                    User user = dbuserHelper.userlogin(userId,userPwd);

                    //登录成功跳转对应类型界面
                    if(user!=null) {
                        Toast.makeText(getApplicationContext(), user.getUserId() + "登录成功", Toast.LENGTH_SHORT).show();
                        Intent intent;
                        ArrayList<User> list = new ArrayList<>();
                        list.add(user);

                        intent = new Intent(getApplicationContext(), UserCenterActivity.class);
                        /* intent：这是一个Intent对象，用于启动一个新的Activity或者向已存在的Activity或Service传递信息。
                        putParcelableArrayListExtra()：这是Intent类的一个方法，用于将一个实现了Parcelable接口的ArrayList对象放入Intent中。Parcelable是一个Android接口，用于对象在进程间通信（IPC）时的序列化和反序列化。
                        "LoginUser"：这是一个字符串键，用于标识传递的数据。在接收Intent的Activity或Service中，可以通过这个键来获取传递过来的数据。
                        list：这是一个ArrayList对象，它包含了实现了Parcelable接口的对象。这些对象通常是你自定义的模型类，你需要在这些模型类中实现Parcelable接口，以便于它们可以被正确地序列化和反序列化。
                        所以，整个语句的意思是：将一个实现了Parcelable接口的ArrayList对象list以键为"LoginUser"的方式放入Intent中，以便于在启动新的Activity或与另一个组件通信时传递这个数据。在接收端，可以通过同样的键从Intent中获取并解析这个ArrayList对象。*/
                        intent.putParcelableArrayListExtra("LoginUser", list);
                        startActivity(intent);
                    }else{
                        Toast.makeText(getApplicationContext(),"登录失败，密码错误或账号不存在！",Toast.LENGTH_SHORT).show();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(),"数据库异常",Toast.LENGTH_SHORT).show();
                }
            }
        });
        //注册按键
        Button btn_register=findViewById(R.id.btn_register);
        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(getApplicationContext(),RegisterActivity.class);

                startActivity(intent);
            }
        });
    }
}
